package top.minuy.structure.map;
/**
 * 映射接口
 * @author Minuy
 * @time 17:06
 * @date 2021/9/11
 */
public interface Map<K, V> {
    /**
     * 向字典中添加键值对
     *
     * @param key 键
     * @param val 值
     */
    void add(K key, V val);

    /**
     * 删除一个键值对
     *
     * @param key 要被删除的键
     * @return 返回被删除键的值，如若键不存在，返回空
     */
    V remove(K key);

    /**
     * 查询键是否存在
     *
     * @param key 要查询的键
     * @return 此键是否存在
     */
    boolean contains(K key);

    /**
     * 获取一个键的值
     *
     * @param key 键
     * @return 值
     */
    V get(K key);

    /**
     * 修改一个键值对
     *
     * @param key 键
     * @param newVal 值
     */
    void set(K key, V newVal);

    /**
     * 获取字典的大小
     *
     * @return 字典的大小
     */
    int getSize();

    /**
     * 判断字典是否为空
     *
     * @return 字典是否为空
     */
    boolean isEmpty();

}
